const container = require('rhea');
const crypto = require('crypto');
const db = require('./sql/db.js')

//创建Connection。
var connection = container.connect({
    //接入域名，请参见AMQP客户端接入说明文档。
    'host': 'iot-06z00b21oxo03w6.amqp.iothub.aliyuncs.com',
    'port': 5671,
    'transport':'tls',
    'reconnect':true,
    'idle_time_out':60000,
    //userName组装方法，请参见AMQP客户端接入说明文档。
    'username':'k595PXZUokultZN3tRse000100|authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=LTAI5tELA8Avci1BLtC7H1zi,iotInstanceId=iot-06z00b21oxo03w6,consumerGroupId=k595PXZUokultZN3tRse000100|', 
    //计算签名，password组装方法，请参见AMQP客户端接入说明文档。
    'password': hmacSha1('MjqWg1bItQnaqga2YH77BOOF9xh1Xh', 'authId=LTAI5tELA8Avci1BLtC7H1zi&timestamp=1573489088171'),
});

//创建Receiver Link。
var receiver = connection.open_receiver();

//接收云端推送消息的回调函数。
container.on('message', function (context) {
    var msg = context.message;
    var messageId = msg.message_id;
    var topic = msg.application_properties.topic;
    var content = Buffer.from(msg.body.content).toString();

    // 输出内容。
    console.log(content);
    content = JSON.parse(content);
    //console.log(content.items.CurrentTemperature.value);

    let temValue = content.items.CurrentTemperature.value;
    let deviceName = content.deviceName;

    // console.log(temName);

    db(`insert into temData set deviceName='${deviceName}', temValue=${temValue}`, (err, result) => {
      if (err) throw err;
      console.log('插入温度数据成功');
    })
    

    //发送ACK，注意不要在回调函数有耗时逻辑。
    context.delivery.accept();
});

//计算password签名。
function hmacSha1(key, context) {
    return Buffer.from(crypto.createHmac('sha1', key).update(context).digest())
        .toString('base64');
}